/**
 * 控制缩放 和 旋转
 */

import * as THREE from 'three'
// 导入轨道控制器
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'

// 创建场景
const scene = new THREE.Scene()

// 创建相机
const camera = new THREE.PerspectiveCamera(
    75,
    window.innerWidth / window.innerHeight,
    0.1,
    1000
)

// 设置相机位置
camera.position.set(0, 0, 20)
scene.add(camera)

// 添加物体
const geometry = new THREE.BoxGeometry(1, 1, 1)

// 材质
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 })

// 根据几何体和材质创建物体
const cube = new THREE.Mesh(geometry, material)

// 将几何体添加到场景中
scene.add(cube)
console.log(cube)

// 修改物体位置
// cube.position.set(5,0,0)
cube.position.x = 5

// 缩放
cube.scale.set(1, 2, 1)

// 旋转
cube.rotation.set(Math.PI / 4, 0, 0)

// 初始化渲染器
const renderer = new THREE.WebGLRenderer()

renderer.setSize(window.innerWidth, window.innerHeight)
// console.log(renderer)

// 将webgl渲染的 canvas内容添加到body上
document.body.appendChild(renderer.domElement)

// 使用渲染器，通过相机将场景渲染进来
renderer.render(scene, camera)

// 创建轨道控制器
const controls = new OrbitControls(camera, renderer.domElement)

// 添加坐标轴辅助器
const axesHelper = new THREE.AxesHelper(5)
scene.add(axesHelper)

function render() {
    renderer.render(scene, camera)
    // 渲染下一帧的时候调用render函数
    requestAnimationFrame(render)
}
render()
